package cn.tedu.epidemic.webapi.mapper;

import cn.tedu.community.commons.pojo.comment.entity.Comment;
import cn.tedu.community.commons.pojo.comment.entity.CommentLike;
import cn.tedu.community.commons.pojo.comment.vo.CommentListItemVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CommentMapper {
    /**
     * 添加评论
     */
    int insert(Comment comment);

    CommentListItemVO selectById(Long id);

    /**
     * 根据评论id和用户id删除评论（用于删除自己发表的评论）
     */
    int deleteByIdAndUserId(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 根据论坛id删除所有对应的评论（用于用户删除论坛后）
     */
    int deleteByForumId(Long forumId);

    /**
     * 根据论坛id和评论id删除评论(用于删除当前用户发布的论坛下的评论)
     */
    int deleteByIdForumId(@Param("id") Long id, @Param("forumId") Long forumId);

    List<CommentListItemVO> commentListByForumId(Long forumId);

    /**
     * 根据评论id和当前用户点赞评论
     */
    int addLike(CommentLike commentLike);

    /**
     * 根据评论id和当前用户取消点赞
     */
    int deleteLike(@Param("commentId") Long commentId, @Param("userId") Long userId);

    /**
     * 根据评论id和当前用户统计点赞数量（用于取消点赞）
     */
    int countComIdUserId(@Param("commentId") Long commentId, @Param("userId") Long userId);

    /**
     * 根据评论id统计数量（用于展示点赞数）
     */
    int countByComId(Long commentId);

    /**
     * 根据评论ids删除评论点赞
     */
    int deleteLikeByComIds(Long[] commentIds);

    /**
     * 根据评论id删除点赞（用于删除单条评论）
     */
    int deleteLikeByComId(Long commentId);

    /**
     * 根据论坛id查询评论ids
     */
    Long[] getComIdsByForumId(Long forumId);
}
